跳到主要内容

Go 的文本对齐工具 tabwriter

在某些情况下,输出(通常是数据输出)是通过选项卡文本完成的,例如使用这个 -func 命令时

$ go tool cover -func=cover.out

stgrpc/main.go:5: main 100.0%
stgrpc/main.go:10: pass 66.7%
stgrpc/main.go:17: fail 0.0%
total: (statements) 66.7%

输出的这种整齐的表格形式的文本数据就是通过 tabwriter 包来实现的,使用例:

package main

import (
"fmt"
"os"
"text/tabwriter"
)

func main() {

w := tabwriter.NewWriter(os.Stdout, 15, 0, 1, ' ',
tabwriter.AlignRight)
fmt.Fprintln(w, "username\tfirstname\tlastname\t")
fmt.Fprintln(w, "sohlich\tRadomir\tSohlich\t")
fmt.Fprintln(w, "novak\tJohn\tSmith\t")
w.Flush()

}

输出:

$ go run tabwriter.go
username firstname lastname
sohlich Radomir Sohlich
novak John Smith

这里的 NewWriter 函数调用配置的参数创建 Writer 过滤器。 此 Writer 写入的所有数据都根据参数进行格式化。 os.Stdout 在这里用于演示目的。

text/tabwriter 包还提供了一些配置选项,例如 flag 参数。 最有用的是 tabwriter.AlignRight,它将编写器配置为在每列中将内容对齐。

References

package tabwriter